package com.tgy.reflection;

/***
 * @ClassName: ClassloaderTest
 * @Description: 测试类的加载器
 * @Auther: 送一一块二向箔
 * @Date: 17:14 2021/12/1
 * @version : V1.0
 */
public class ClassloaderTest {
    public static void main(String[] args) throws ClassNotFoundException {
        //获取系统类的加载器
        ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
        System.out.println(systemClassLoader);

        //获取系统类型加载器的父类加载器-->扩展类加载器
        ClassLoader parent = systemClassLoader.getParent();
        System.out.println(parent);

        //获取扩展加载器的父类加载器-->根加载器（C/C++）
        ClassLoader orginalLoader = parent.getParent();
        System.out.println(orginalLoader);

        //测试当前类是哪个加载器加载的
        ClassLoader classLoader = Class.forName("com.tgy.reflection.ClassloaderTest").getClassLoader();
        System.out.println(classLoader);

        //测试JDK内置的类是谁加载的
        ClassLoader classLoader1 = Class.forName("java.lang.Object").getClassLoader();
        System.out.println(classLoader1);

        //测试如何获得系统类加载器可以加载的路径
        System.out.println(System.getProperty("java.class.path"));

        //双亲委派机制，防止同包名，类冲突

    }
}
